window.onload = function() {
	init();
	pineza.workInProgress = false;
}

// Η function `megaloma' καλείται στο "onmousover" για κάθε μία
// από τις επιλογές του μενού. Σκοπός της είναι να κάνει εμφανές
// ότι η επιλογή είναι υποψήφια προς επιλογή με αλλαγή κάποιων
// χαρακτηριστικών εμφάνισης της επιλογής.

function megaloma(obj) {
	if (!pineza.workInProgress)
		obj.className = 'menuItemReady';
}

// Η function `mikrema' είναι η αντίστροφη της `megaloma' και
// καλείται στο "onmouseout" για κάθε μία από τις επιλογές του
// μενού. Σκοπός της είναι να επαναφέρει τα χαρακτηριστικά
// εμφάνισης της επιλογής στις default τιμές τους.

function mikrema(obj) {
	obj.className = 'menuItem';
}

// Η function `doTheJob' καλείται στο "onclick" για κάθε μία από τις
// επιλογές του μενού. Δέχεται ως παραμέτρους την κωδική ονομασία της
// εργασίας που θα εκτελεστεί, το DOM object της επιλογής και ένα
// προειδοποιητικό μήνυμα που θα εμφανιστεί κατά την επιβεβαίωση της
// εκτέλεσης της εργασίας.

function doTheJob(job, obj, warn) {
	if (checkWorking(obj)) return false;
	if (warn && (!confirm(warn))) return false;

	// Αν η εργασία δεν έχει καθοριστεί, τότε πρόκειται για
	// έξοδο από το administrator menu.
	if (!job) {
		self.location = pineza.server + 'index.php?adminout=yes';
		return false;
	}

	pineza.workInProgress = true;
	var x = getelid(job + 'Icon');
	if (x) {
		if (x.src) x.src = pineza.server + 'images/working.gif';
		if (x.style) x.style.display = 'inline';
	}

	var req = newRequest();
	if (req) {
		req.onreadystatechange = function() {
			checkFail(req, job, x);
		};
		req.open('post', pineza.server + 'admin/' + job + '.php', true);
		sendRequest(req);
	}
	else {
		alert(job + ': AJAX request failed');
		pineza.workInProgress = false;
		if (x) {
			if (x.src) x.src = pineza.server + 'images/fail.png';
			if (x.style) x.style.display = 'inline';
		}
	}

	return false;
}

function checkFail(req, job, iconId) {
	if (req.readyState != 4)
		return;

	if (req.status != 200) {
		if (iconId && iconId.style) iconId.src = pineza.server + 'images/fail.png';
		setTimeout(function() {
			alert(job + ': AJAX request failed (status = ' + req.status + ')');
			pineza.workInProgress = false;
		}, 10);
		return;
	}

	var rsp = fixResponse(req);
	if (rsp) {
		if (iconId && iconId.style) iconId.src = pineza.server + 'images/fail.png';
		setTimeout(function() {
			alert(job + ': ' + rsp);
			pineza.workInProgress = false;
		}, 10);
	}
	else {
		if (iconId && iconId.style) iconId.src = pineza.server + 'images/check.gif';
		pineza.workInProgress = false;
	}
}

function checkWorking(obj) {
	if (pineza.workInProgress) {
		var c = obj.style.color;
		var b = obj.style.backgroundColor;
		setTimeout(function() {
			obj.style.color = c;
			obj.style.backgroundColor = b;
		}, 100);
		obj.style.color = '#FF6666';
		obj.style.backgroundColor = '#FFFF99';
		return true;
	}
	else {
		return false;
	}
}
